<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Remote Mode Commands</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="The Developer's Guide to Gutenprint"
HREF="book1.html"><LINK
REL="UP"
TITLE="ESC/P2"
HREF="c464.html"><LINK
REL="PREVIOUS"
TITLE="ESC/P2"
HREF="c464.html"><LINK
REL="NEXT"
TITLE="Appropriate Remote Commands"
HREF="x1669.html"><META
http-equiv="Content-Type"
content="text/html; charset=@encoding@"></HEAD
><BODY
CLASS="sect1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Developer's Guide to Gutenprint</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="c464.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. ESC/P2</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x1669.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="AEN955"
>Remote Mode Commands</A
></H1
><P
>&#13;    The following description of remote commands comes out of an
    examination of the sequences used by the printer utilities
    bundled with the Windows drivers for the ESC740, and from other
    sources (some Epson manuals, experimentation, analysis of print
    files).  It is largely speculative as these commands are not all
    documented in the Epson documentation we have access to.
    Generally, newer manuals provide more thorough documentation.
  </P
><P
>&#13;    Remote command mode is entered when the printer is sent the
    following sequence:
  </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN959"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>ESC (R BC=8 00 R E M O T E 1</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;    Remote mode commands are then sent, and terminated with the
    following sequence:
  </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN962"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>ESC 00 00 00</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;    All remote mode commands must be sent before the initial
    <TT
CLASS="literal"
>ESC (G</TT
> command is sent.
  </P
><P
>&#13;    This introductory sequence is then followed by a sequence of
    commands.  Each command is constructed as follows:
  </P
><P
></P
><OL
TYPE="1"
><LI
><P
>&#13;        Two ASCII bytes indicating the function
      </P
></LI
><LI
><P
>&#13;        A byte count (two bytes, little-endian) for the parameters
      </P
></LI
><LI
><P
>&#13;        Binary parameters, if any
      </P
></LI
></OL
><P
>&#13;      This is a list of all remote commands we have seen:
  </P
><P
></P
><DIV
CLASS="variablelist"
><P
><B
>ESC/P2 Remote Mode Commands</B
></P
><DL
><DT
><TT
CLASS="literal"
>NC <CODE
CLASS="varname"
>BC</CODE
>=2 00
          00</TT
></DT
><DD
><P
>&#13;          Print a nozzle check pattern.
        </P
></DD
><DT
><TT
CLASS="literal"
>VI <CODE
CLASS="varname"
>BC</CODE
>=2 00
          00</TT
></DT
><DD
><P
>&#13;          On my 740, prints the following, probably “version
          information”:
        </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN989"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>W01286 I02382\r\n</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
></DD
><DT
><TT
CLASS="literal"
>* AI <CODE
CLASS="varname"
>BC</CODE
>=3 00 00 00</TT
></DT
><DD
><P
>&#13;          Prints a “printer ID”.  On one 870, prints the
          following:
        </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN997"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>51-51-50-51-49-48\r\n</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;          The Windows driver has a text entry field where this
          number can be entered, but its purpose is unknown.
        </P
></DD
><DT
><TT
CLASS="literal"
>* LD <CODE
CLASS="varname"
>BC</CODE
>=0</TT
></DT
><DD
><P
>&#13;          Load printer defaults from NVRAM, DIP switches, and/or
          ROM. This apparently does not load factory defaults per
          se, but any settings that are saved.  This is commonly
          used right at the end of each print job after the
          <TT
CLASS="literal"
>ESC @</TT
> printer reset command.
        </P
></DD
><DT
><TT
CLASS="literal"
>* CH <CODE
CLASS="varname"
>BC</CODE
>=2 00
          <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;          Perform a head cleaning cycle.  The heads to clean are
          determined by parameter <CODE
CLASS="varname"
>xx</CODE
>:
      </P
><DIV
CLASS="table"
><A
NAME="AEN1015"
></A
><P
><B
>Table 5-5. Head cleaning parameters</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL
WIDTH="1*"
TITLE="id"><COL
WIDTH="1*"
TITLE="description"><THEAD
><TR
><TH
><CODE
CLASS="varname"
>xx</CODE
></TH
><TH
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="constant"
>00</CODE
></TD
><TD
>Clean all heads</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>01</CODE
></TD
><TD
>Clean black head</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>02</CODE
></TD
><TD
>Clean color heads</TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;          While <CODE
CLASS="varname"
>xx</CODE
> = <CODE
CLASS="constant"
>00</CODE
> is
          likely supported by all printers, <CODE
CLASS="varname"
>xx</CODE
>
          = <CODE
CLASS="constant"
>01</CODE
> and <CODE
CLASS="constant"
>02</CODE
>
          are not.
        </P
></DD
><DT
><TT
CLASS="literal"
>* DT <CODE
CLASS="varname"
>BC</CODE
>=3 00
          <CODE
CLASS="varname"
>xx</CODE
> 00</TT
></DT
><DD
><P
>&#13;          Print an alignment pattern.  There are three patterns,
          which are picked via the choice of
          <CODE
CLASS="varname"
>xx</CODE
>.  Pattern <CODE
CLASS="constant"
>0</CODE
>
          is coarse, pattern <CODE
CLASS="constant"
>1</CODE
> is medium, and
          pattern <CODE
CLASS="constant"
>2</CODE
> is fine.
        </P
></DD
><DT
><TT
CLASS="literal"
>* DA <CODE
CLASS="varname"
>BC</CODE
>=4 00
          <CODE
CLASS="varname"
>xx</CODE
> 00
          <CODE
CLASS="varname"
>yy</CODE
></TT
></DT
><DD
><P
>&#13;          Set results for the alignment pattern.
          <CODE
CLASS="varname"
>xx</CODE
> is the pattern
          (<CODE
CLASS="constant"
>1</CODE
>--<CODE
CLASS="constant"
>3</CODE
>);
          <CODE
CLASS="varname"
>yy</CODE
> is the best choice from the set
          (<CODE
CLASS="constant"
>1</CODE
>--<CODE
CLASS="constant"
>7</CODE
> or
          <CODE
CLASS="constant"
>1</CODE
>--<CODE
CLASS="constant"
>15</CODE
>).  This
          does not save to NVRAM, so when the printer is powered
          off, the setting will be lost.
        </P
></DD
><DT
><TT
CLASS="literal"
>* SV <CODE
CLASS="varname"
>BC</CODE
>=0</TT
></DT
><DD
><P
>&#13;          Save the current settings to NVRAM.
        </P
></DD
><DT
><TT
CLASS="literal"
>* RS <CODE
CLASS="varname"
>BC</CODE
>=1
          01</TT
></DT
><DD
><P
>&#13;          Reset the printer.
        </P
></DD
><DT
><TT
CLASS="literal"
>* IQ <CODE
CLASS="varname"
>BC</CODE
>=1
          01</TT
></DT
><DD
><P
>&#13;          Get ink quantity.  This requires direct access to the
          printer port.  The return looks like
        </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN1089"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>IQ:KKCCMMYY</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;          or
        </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN1092"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>IQ:KKCCMMYYccmm</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;          (for 4-color and 6-color printers respectively), where
          each pair of digits are hexadecimal representations of
          percent.
        </P
></DD
></DL
></DIV
><P
>&#13;  The following two commands have been observed on an STP 870.
</P
><P
></P
><DIV
CLASS="variablelist"
><DL
><DT
><TT
CLASS="literal"
>* IR <CODE
CLASS="varname"
>BC</CODE
>=2 00
          <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;          <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>Function unknown</I
></SPAN
>.  This command has
          been observed on an STP 870 with
          <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>03</CODE
> at the start
          of a job and <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>02</CODE
>
          at the end of a job (where it is followed by an
          <TT
CLASS="literal"
>LD</TT
> command).  When in roll mode, the
          values change to
          <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>01</CODE
> at the start
          of a job and <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>00</CODE
>
          at the end of a job.
        </P
></DD
><DT
><TT
CLASS="literal"
>* FP <CODE
CLASS="varname"
>BC</CODE
>=3 00
          <CODE
CLASS="varname"
>pos</CODE
>[2]</TT
></DT
><DD
><P
>&#13;          Specify the horizontal left margin in units of 1/360 inch.
          The default value for <CODE
CLASS="varname"
>pos</CODE
> is
          <CODE
CLASS="constant"
>0</CODE
>.  For borderless printing on
          printers that support it, a value of
          <CODE
CLASS="constant"
>-80</CODE
> (<CODE
CLASS="constant"
>FFB0h</CODE
>)
          should be used.
        </P
></DD
></DL
></DIV
><P
>&#13;    The commands below are partially documented in the Stylus Pro
    9000 manual.  Much of this information is interpreted; none is
    tested.
  </P
><P
></P
><DIV
CLASS="variablelist"
><DL
><DT
><TT
CLASS="literal"
>* SN <CODE
CLASS="varname"
>BC</CODE
>=3 00
            <CODE
CLASS="varname"
>xx</CODE
> <CODE
CLASS="varname"
>yy</CODE
></TT
></DT
><DD
><P
>&#13;            Select Mechanism Sequence.  <CODE
CLASS="varname"
>xx</CODE
>
            controls which sub-operation is performed.
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>00</CODE
> selects
            the “Feed paper sequence setting”.
            <CODE
CLASS="varname"
>yy</CODE
> can take on the following values
            (on the STP 870, at any rate):
          </P
><DIV
CLASS="table"
><A
NAME="AEN1139"
></A
><P
><B
>Table 5-6. Media types</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL
WIDTH="1*"
TITLE="id"><COL
WIDTH="1*"
TITLE="description"><THEAD
><TR
><TH
><CODE
CLASS="varname"
>yy</CODE
></TH
><TH
>Media type</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="constant"
>0</CODE
></TD
><TD
>Default</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>1</CODE
></TD
><TD
>Plain paper</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>2</CODE
></TD
><TD
>Postcards</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>3</CODE
></TD
><TD
>&#13;                    Film (photo quality glossy film, transparencies)
                  </TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>4</CODE
></TD
><TD
>Envelopes</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>5</CODE
></TD
><TD
>Plain paper (fast load)</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>6</CODE
></TD
><TD
>&#13;                    Back light film (although this has been observed
                    with heavyweight matte paper)
                  </TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>7</CODE
></TD
><TD
>&#13;                    Matte paper (observed with 360 dpi inkjet paper,
                    and photo quality inkjet paper)
                  </TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>8</CODE
></TD
><TD
>Photo paper</TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;            Experimentation suggests that this setting changes
            details of how the printers' cut sheet feeder works,
            presumably to tune it for different types of paper.
          </P
><P
>&#13;            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>01</CODE
> controls
            the platen gap setting;
            <CODE
CLASS="varname"
>yy</CODE
>=<CODE
CLASS="constant"
>00</CODE
> is the
            default, <CODE
CLASS="varname"
>yy</CODE
>=<CODE
CLASS="constant"
>1</CODE
> or
            <CODE
CLASS="constant"
>2</CODE
> are higher settings.
          </P
><P
>&#13;            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>02</CODE
> controls
            paper loading speed
            (<CODE
CLASS="varname"
>yy</CODE
>=<CODE
CLASS="constant"
>0</CODE
> is normal,
            <CODE
CLASS="constant"
>1</CODE
> is fast, <CODE
CLASS="constant"
>2</CODE
>
            is slow).  It appears that <CODE
CLASS="constant"
>1</CODE
> is
            used when printing on “plain paper”,
            “360dpi ink jet paper” or “ink jet
            transparencies”, and
            <CODE
CLASS="varname"
>yy</CODE
>=<CODE
CLASS="constant"
>00</CODE
> for all
            other paper type settings.
          </P
><P
>&#13;            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>07</CODE
> controls
            duplex printing for printers with that capability
            (<CODE
CLASS="varname"
>yy</CODE
>=<CODE
CLASS="varname"
>0</CODE
> is default,
            for non-duplex printing; <CODE
CLASS="constant"
>1</CODE
> is front
            side of the paper, and <CODE
CLASS="varname"
>2</CODE
> is back
            side).
          </P
><P
>&#13;            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>09</CODE
> controls
            zero margin printing on the printers with the capability
            of printing zero-margin on all sides (Stylus Photo
            780/790, 890, and 1280/1290).
            <CODE
CLASS="varname"
>yy</CODE
>=<CODE
CLASS="constant"
>0</CODE
> is the
            default; <CODE
CLASS="constant"
>1</CODE
> enables zero margin
            printing.
          </P
></DD
><DT
><TT
CLASS="literal"
>* PP <CODE
CLASS="varname"
>BC</CODE
>=3 00
            <CODE
CLASS="varname"
>xx</CODE
>
            <CODE
CLASS="varname"
>yy</CODE
></TT
></DT
><DD
><P
>&#13;            Set Paper Path.
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>2</CODE
> indicates
            manual feed,
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>3</CODE
> is for roll
            paper.  <CODE
CLASS="varname"
>yy</CODE
> selects “paper path
            number”.
          </P
></DD
><DT
><TT
CLASS="literal"
>* AC <CODE
CLASS="varname"
>BC</CODE
>=2 00
            <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;            Set Auto Cutting State.
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>0</CODE
> selects
            auto cutting off,
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>1</CODE
> selects
            auto cutting on, and
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>2</CODE
> indicates
            horizontal print page line on.  It appears that with
            auto cutting on, roll paper is cut automatically at the
            point a formfeed character is sent.  The formfeed
            character is normally used to eject a page; with this
            turned on, it also cuts the roll paper.  Horizontal
            print page line on prints a narrow line of black dots at
            the position the paper should be cut manually.
          </P
></DD
><DT
><TT
CLASS="literal"
>* DR <CODE
CLASS="varname"
>BC</CODE
>=4 00 xx
            <CODE
CLASS="varname"
>DT2</CODE
></TT
></DT
><DD
><P
>&#13;            Set Drying Time.
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>00</CODE
> sets the
            drying time “per scan” (per pass?);
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>01</CODE
> sets the
            drying time per page. <CODE
CLASS="varname"
>DT</CODE
> indicates
            the drying time, which is in seconds if page mode is
            used and in milliseconds if scan mode is used.
            <CODE
CLASS="varname"
>DT</CODE
> must not exceed 3600 seconds in
            per-page mode and 10000 milliseconds in per-scan mode.
          </P
></DD
><DT
><TT
CLASS="literal"
>* IK <CODE
CLASS="varname"
>BC</CODE
>=2 00
            <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;            Select Ink Type.
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>00</CODE
> selects
            dye ink.  Pigment ink is apparently selected by
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>01</CODE
>.  This
            probably does not apply to the consumer-grade printers.
          </P
></DD
><DT
><TT
CLASS="literal"
>* PZ BC=2 00 xx</TT
></DT
><DD
><P
>&#13;            Set Pause After Printing.
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>00</CODE
> selects no
            pause after printing;
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>01</CODE
> selects
            pause after printing.  If turned on, the printer is
            paused after the page is ejected (by the FF byte).  If
            cutting is turned on, the printer is paused
            <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>after</I
></SPAN
> the cutting or printing of
            the horizontal cut line.
          </P
></DD
><DT
><TT
CLASS="literal"
>* EX <CODE
CLASS="varname"
>BC</CODE
>=6 00 00 00 00 0x14
          <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;            Set Vertical Print Page Line Mode.
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>00</CODE
> is off,
            <CODE
CLASS="varname"
>xx</CODE
>=<CODE
CLASS="constant"
>01</CODE
> is on.  If
            turned on, this prints vertical trim lines at the left
            and right margins.
          </P
></DD
><DT
><TT
CLASS="literal"
>* EX <CODE
CLASS="varname"
>BC</CODE
>=6 00 00 00 00 0x05
            <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;            Set Roll Paper Mode.  If <CODE
CLASS="varname"
>xx</CODE
> is
            <CODE
CLASS="constant"
>0</CODE
>, roll paper mode is off; if
            <CODE
CLASS="varname"
>xx</CODE
> is <CODE
CLASS="constant"
>1</CODE
>, roll
            paper mode is on.
          </P
></DD
><DT
><TT
CLASS="literal"
>* EX <CODE
CLASS="varname"
>BC</CODE
>=3 00
            <CODE
CLASS="varname"
>xx</CODE
> <CODE
CLASS="varname"
>yy</CODE
></TT
></DT
><DD
><P
>&#13;            Appears to be a synonym for the <TT
CLASS="literal"
>SN</TT
>
            command described above.
          </P
></DD
><DT
><TT
CLASS="literal"
>* PH <CODE
CLASS="varname"
>BC</CODE
>=2 00
            <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;            Select Paper Thickness.  Set the paper thickness
            <CODE
CLASS="varname"
>xx</CODE
> in .1 mm units.  This must not
            exceed <CODE
CLASS="constant"
>0x10</CODE
> (1.6 mm).  If the
            thickness is set “more than” .6 mm (which
            probably means “at least” 0.6 mm, since the
            other case reads “less than 0.5 mm”), the
            platen gap is set high irrespective of the
            <TT
CLASS="literal"
>SN</TT
> command.
          </P
></DD
><DT
><TT
CLASS="literal"
>* PM <CODE
CLASS="varname"
>BC</CODE
>=2 00
            00</TT
></DT
><DD
><P
>&#13;            <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>Function unknown</I
></SPAN
>. Used on the STC
            3000 at least when using roll feed, and on the STP 870
            in all print files analysed to date.
          </P
></DD
><DT
><TT
CLASS="literal"
>* ST <CODE
CLASS="varname"
>BC</CODE
>=2 00
            <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;            Epson's STP 750/1200 programming guide refers to the
            <TT
CLASS="literal"
>ST</TT
> command as “Set printer
            state reply”.  If <CODE
CLASS="varname"
>xx</CODE
> is
            <CODE
CLASS="constant"
>0</CODE
> or <CODE
CLASS="constant"
>2</CODE
>, the
            printer will not send status replies.  If
            <CODE
CLASS="varname"
>xx</CODE
> is <CODE
CLASS="constant"
>1</CODE
> or
            <CODE
CLASS="constant"
>3</CODE
>, the printer will send status
            replies.  The status replies consist of state, error
            codes, ink leve, firmware version, and warning status.
          </P
><P
>&#13;            The actual reply is documented as
          </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN1341"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>@BDC ST\r
ST: xx;
[ER: yy;]
IQ: n1n2n3n4;
[WR: w1,w2...;]
RV: zz;
AI:CW:02kkccmmyy, MI:mm
[TC:tttt;]
INK:...;
\f</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;            (<TT
CLASS="literal"
>\r</TT
> is carriage return;
            <TT
CLASS="literal"
>\n</TT
> is newline; <TT
CLASS="literal"
>\f</TT
>
            is formfeed.)
          </P
><P
>&#13;            <TT
CLASS="literal"
>ST</TT
> is the printer status:
          </P
><DIV
CLASS="table"
><A
NAME="AEN1349"
></A
><P
><B
>Table 5-7. Printer status codes</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL
WIDTH="1*"
TITLE="status"><COL
WIDTH="1*"
TITLE="description"><THEAD
><TR
><TH
>Status code</TH
><TH
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="constant"
>00</CODE
></TD
><TD
>Error</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>01</CODE
></TD
><TD
>Self-test</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>02</CODE
></TD
><TD
>Busy</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>03</CODE
></TD
><TD
>Waiting while printing</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>04</CODE
></TD
><TD
>Idle</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>07</CODE
></TD
><TD
>Cleaning/filling ink heads</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>08</CODE
></TD
><TD
>Not yet initialized/filling heads</TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;            <TT
CLASS="literal"
>ER</TT
>, if provided, is the error status:
          </P
><DIV
CLASS="table"
><A
NAME="AEN1389"
></A
><P
><B
>Table 5-8. Printer error codes</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL
WIDTH="1*"
TITLE="error"><COL
WIDTH="1*"
TITLE="description"><THEAD
><TR
><TH
>Error code</TH
><TH
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="constant"
>00</CODE
></TD
><TD
>Fatal Error</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>01</CODE
></TD
><TD
>Interface not selected</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>04</CODE
></TD
><TD
>Paper jam</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>05</CODE
></TD
><TD
>Out of ink</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>06</CODE
></TD
><TD
>Paper out</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>0D</CODE
></TD
><TD
>Paper gap error</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>10</CODE
></TD
><TD
>Maintenance request</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>11</CODE
></TD
><TD
>Tear-off mode selected</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>12</CODE
></TD
><TD
>Double feed error</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>1C</CODE
></TD
><TD
>Cutter position error</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>1D</CODE
></TD
><TD
>Cutter jam</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>1E</CODE
></TD
><TD
>Ink color error</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>23</CODE
></TD
><TD
>Ink combination error</TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;            <TT
CLASS="literal"
>IQ</TT
> is the amount of ink left, as a
            (decimal!)  percentage expressed in hexadecimal.  The
            values are black, cyan, magenta, and yellow.  6 and 7
            color printers usually specify two or three additional
            values for light cyan, light magenta, and gray.
            However, some low end 6-color printers specify only four
            values.
          </P
><P
>&#13;            For printers with different ink cartridge options, the
            following additional values may appear:
          </P
><DIV
CLASS="table"
><A
NAME="AEN1454"
></A
><P
><B
>Table 5-9. Printer additional ink codes</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL
WIDTH="1*"
TITLE="code"><COL
WIDTH="1*"
TITLE="description"><THEAD
><TR
><TH
>Ink code</TH
><TH
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="constant"
>NA</CODE
></TD
><TD
>Ink cartridge is not inserted</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>RE</CODE
></TD
><TD
>&#13;                    Ink cartridge information cannot be read
                  </TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>WE</CODE
></TD
><TD
>&#13;                    Ink cartridge information cannot be written
                  </TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>CI</CODE
></TD
><TD
>&#13;                    Ink cartridge is inserted, but has not been read
                  </TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;            <TT
CLASS="literal"
>WR</TT
>, if provided, is the warning status:
          </P
><DIV
CLASS="table"
><A
NAME="AEN1482"
></A
><P
><B
>Table 5-10. Printer warning codes</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL
WIDTH="1*"
TITLE="warning"><COL
WIDTH="1*"
TITLE="description"><THEAD
><TR
><TH
>Warning code</TH
><TH
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="constant"
>10</CODE
></TD
><TD
>&#13;                    Black ink low (Photo black on printers using
                    UltraChrome® ink)
                  </TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>11</CODE
></TD
><TD
>Cyan</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>12</CODE
></TD
><TD
>Magenta</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>13</CODE
></TD
><TD
>Yellow</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>14</CODE
></TD
><TD
>Light cyan (presumably)</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>15</CODE
></TD
><TD
>Light magenta (presumably)</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>17</CODE
></TD
><TD
>&#13;                    Gray (with UltraChrome-compatible printers)
                  </TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>18</CODE
></TD
><TD
>Matte black 1 (UltraChrome)</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>19</CODE
></TD
><TD
>Matte black 2 (UltraChrome)</TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;            <TT
CLASS="literal"
>RV</TT
> is the firmware revision (one byte
            ASCII).
          </P
><P
>&#13;            <TT
CLASS="literal"
>AI</TT
> is actuator information.  These
            are two byte ASCII codes that indicate ``ink weight rank
            ID'' of KCMY, respectively.
          </P
><P
>&#13;          <TT
CLASS="literal"
>TC</TT
>, if provided, is the total time of
          cleaning or ink filling (?).
          </P
><P
>&#13;            <TT
CLASS="literal"
>RC</TT
>, if provided, is the firmware
            revision.
          </P
><P
>&#13;            <TT
CLASS="literal"
>INK:</TT
> and <TT
CLASS="literal"
>MI</TT
> are
            <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>not documented</I
></SPAN
>.
          </P
></DD
><DT
><TT
CLASS="literal"
>* SM <CODE
CLASS="varname"
>BC</CODE
>=2 00
            <CODE
CLASS="varname"
>xx</CODE
></TT
></DT
><DD
><P
>&#13;            Set Status Reply Rate.  <CODE
CLASS="varname"
>xx</CODE
> is the
            repeat interval in seconds.  If <CODE
CLASS="varname"
>xx</CODE
> is
            <CODE
CLASS="constant"
>0</CODE
>, the status is returned only when
            the printer's state changes.
          </P
></DD
><DT
><TT
CLASS="literal"
>* ST <CODE
CLASS="varname"
>BC</CODE
>=1
            01</TT
></DT
><DD
><P
>&#13;            Reply Printer Status.  The reply is formatted as follows:
          </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN1556"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>@BDC PS\r\nST:<CODE
CLASS="varname"
>xx</CODE
>;\f</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;            <TT
CLASS="literal"
>\r</TT
> is carriage return;
            <TT
CLASS="literal"
>\n</TT
> is newline; <TT
CLASS="literal"
>\f</TT
> is
            formfeed).  If <CODE
CLASS="varname"
>xx</CODE
> (the reply value) is
            <CODE
CLASS="constant"
>0</CODE
> or <CODE
CLASS="constant"
>2</CODE
>,
            automatic status update is disabled; if
            <CODE
CLASS="constant"
>1</CODE
> or <CODE
CLASS="constant"
>3</CODE
>, it is
            enabled.
          </P
></DD
><DT
><TT
CLASS="literal"
>* SM <CODE
CLASS="varname"
>BC</CODE
>=1
            01</TT
></DT
><DD
><P
>&#13;            Reply Printer Status Rate.  The reply is formatted as
            follows:
          </P
><DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN1574"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="screen"
>@BDC PS\r\nST:xx;\f</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><P
>&#13;            <TT
CLASS="literal"
>\r</TT
> is carriage return;
            <TT
CLASS="literal"
>\n</TT
> is newline; <TT
CLASS="literal"
>\f</TT
> is
            formfeed).  See <TT
CLASS="literal"
>SM
              <CODE
CLASS="varname"
>BC</CODE
>=2</TT
> above for the meaning of
            the return value.
          </P
></DD
><DT
><TT
CLASS="literal"
>* ??
            <CODE
CLASS="varname"
>BC</CODE
>=<CODE
CLASS="varname"
>xx</CODE
>
            <CODE
CLASS="varname"
>y</CODE
>[1] …
            <CODE
CLASS="varname"
>y</CODE
>[xx]</TT
></DT
><DD
><P
>&#13;            Echo Parameters (perhaps better described as Echo
            Commands).  The command string is executed (it would
            appear from the documentation), and the string sent is
            returned using a sequence similar to that described in
            the <TT
CLASS="literal"
>ST <CODE
CLASS="varname"
>BC</CODE
>=1</TT
> and
            <TT
CLASS="literal"
>SM <CODE
CLASS="varname"
>BC</CODE
>=1</TT
> commands.
            Note that in this case the number of bytes is variable!
          </P
></DD
><DT
><TT
CLASS="literal"
>* SM <CODE
CLASS="varname"
>BC</CODE
>=2 00
            02</TT
></DT
><DD
><P
>&#13;            <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>Function unknown</I
></SPAN
>.  Used on the STC
            3000 at least when using roll feed.
          </P
></DD
><DT
><TT
CLASS="literal"
>* JE <CODE
CLASS="varname"
>BC</CODE
>=1
            00</TT
></DT
><DD
><P
>&#13;            <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>Function unknown</I
></SPAN
>.  On new printers
            (STC 740 or newer), this command should be sent after
            all data has been sent.  If this command is not sent,
            and the printer is connected to a Windows system, the
            last page of the job will not print completely.  The
            most likely explanation for for this is that the Windows
            driver typically puts the printer in 1284.4 packet mode,
            and this command has the effect of flushing the buffer
            in the printer.
          </P
></DD
><DT
><TT
CLASS="literal"
>* CO <CODE
CLASS="varname"
>BC</CODE
>=8 00
            <CODE
CLASS="varname"
>cutter</CODE
>[1] <CODE
CLASS="varname"
>page</CODE
>[1]
            <CODE
CLASS="varname"
>unit</CODE
>[1]
            <CODE
CLASS="varname"
>position</CODE
>[4]</TT
></DT
><DD
><P
>&#13;            Specify paper cutting on Stylus Photo 2200 (and perhaps
            some other printers).  <CODE
CLASS="varname"
>cutter</CODE
> must be
            0.  <CODE
CLASS="varname"
>page</CODE
> should be one of the
            following:
          </P
><DIV
CLASS="table"
><A
NAME="AEN1621"
></A
><P
><B
>Table 5-11. Paper cutting codes</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL
WIDTH="1*"
TITLE="code"><COL
WIDTH="1*"
TITLE="description"><THEAD
><TR
><TH
>Code</TH
><TH
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="constant"
>0</CODE
></TD
><TD
>All pages</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>1</CODE
></TD
><TD
>First page only</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>2</CODE
></TD
><TD
>Last page only</TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;            <CODE
CLASS="varname"
>unit</CODE
> should be one of the following:
          </P
><DIV
CLASS="table"
><A
NAME="AEN1645"
></A
><P
><B
>Table 5-12. Paper cutting units</B
></P
><TABLE
BORDER="1"
CLASS="CALSTABLE"
><COL
WIDTH="1*"
TITLE="code"><COL
WIDTH="1*"
TITLE="description"><THEAD
><TR
><TH
>Code</TH
><TH
>Description</TH
></TR
></THEAD
><TBODY
><TR
><TD
><CODE
CLASS="constant"
>0</CODE
></TD
><TD
>1/360 in.</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>1</CODE
></TD
><TD
>1/720 in.</TD
></TR
><TR
><TD
><CODE
CLASS="constant"
>2</CODE
></TD
><TD
>1/1440 in.</TD
></TR
></TBODY
></TABLE
></DIV
><P
>&#13;            This command should be used twice.  The first
            <TT
CLASS="literal"
>CO</TT
> command specifies where the page
            will be cut at the top, and the second specifies where
            the page will be cut at the bottom.  This permits
            cutting both the top and the bottom of the page.
          </P
></DD
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="c464.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="book1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="x1669.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>ESC/P2</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="c464.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Appropriate Remote Commands</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>